from PyQt5.Qt import *
from widget.my_window import MyWindow
from widget.utils.flow_layout import FlowLayout
import os


class HelpPage(MyWindow):
    '''
    使用文档
    '''
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setAttribute(Qt.WA_StyledBackground, False)
        # 窗口置顶
        # self.setWindowModality(Qt.ApplicationModal)
        # self.setWindowFlag(Qt.WindowStaysOnTopHint)
        # 父窗口实例对象
        self.my_parent_window = kwargs['my_parent']
        # 窗口标题
        self.label_title = QLabel(self)
        self.label_title.resize(230, 40)
        self.label_title.setText('使用文档')
        self.label_title.move(10, 5)
        self.setup_init()

    def setup_init(self):
        self.imageheight = 730

        # self.listwidget = QtWidgets.QListWidget(self)
        # self.listwidget.resize(400,300)
        # self.listwidget.setGeometry(QtCore.QRect(0, 0, 300, 200))
        # self.listwidget.addItem("test")

        # print(os.path.dirname(os.path.abspath(__file__)) + r'\init_file\img\3333.png')
        # 图片路径要配置对
        help_img_dir = qApp.cx_project_root.replace('\\', '/') + r'/init_file/img/help_page_window_img/'
        print(help_img_dir)
        # 获取帮助图片
        # self.files_it = iter([os.path.join(help_img_dir, file) for file in os.listdir(help_img_dir)])
        # for item in self.files_it:
        #     print(item)
        # 生成帮助文本
        self.files_content = [
            {'type': 'txt', 'content': '前言 -----------------------------------------------------------------------'},
            {'type': 'txt', 'content': '\t本程序是一个数据库导入工具，目前实现了sqlserver, Excel, Marc, NoteExpress向系统平台ES的数据'},
            {'type': 'txt', 'content': '\t导入，基本使用方法如下↓'},
            {'type': 'txt', 'content': '特别注意事项 ----------------------------------------------------------------'},
            {'type': 'txt', 'content': '\t关系型数据库和菲关系型数据库结构差异较大，数据并不能直接进行导入，比如，sqlserver库导入es库时，'},
            {'type': 'txt', 'content': '\t由于sqlserver数据库包含主外键关联关系表，使用视图将关联关系，'},
            {'type': 'txt', 'content': '\t否则一般不能直接导入es，必须借助数据库视图实现表结构过渡，因此，在使用导入工具导入es库前，请'},
            {'type': 'txt', 'content': '\t确保连接上的sqlserver，mysql等关系型数据库中有开发人员建立好的数据库视图，使用视图进行数据导入  '},
            {'type': 'img', 'content': help_img_dir + r'help10.png'},
            {'type': 'txt', 'content': '导入流程目录: ------------------------------------------------------------------'},
            {'type': 'txt', 'content': '\t1：进入主界面选择导入按钮                                                            '},
            {'type': 'txt', 'content': '\t2：进入数据导入界面                                                     '},
            {'type': 'txt', 'content': '\t3：配置数据来源页面（按需配置）                                                  '},
            {'type': 'txt', 'content': '\t\t3.1：sqlserver数据来源配置方法                                       '},
            {'type': 'txt', 'content': '\t\t3.2：excel数据来源配置方法                                       '},
            {'type': 'txt', 'content': '\t\t3.3：marc数据来源配置方法                                       '},
            {'type': 'txt', 'content': '\t\t3.4：noteexpress数据来源配置方法                                       '},
            {'type': 'txt', 'content': '\t4：配置导入目标页面（按需配置）                                      '},
            {'type': 'txt', 'content': '\t\t4.1：系统平台导入目标配置方法                                       '},
            {'type': 'txt', 'content': '\t5：数据的来源和目标都配置好后，配置数据的导入方式（导入哪些字段，字段对应关系，是否查重等）           '},
            {'type': 'txt', 'content': '\t6：配置好后点击开始导入                                                    '},
            {'type': 'txt', 'content': '\t7：特别注意事项                                                        '},
            {'type': 'txt', 'content': '1：进入主界面选择导入按钮 -----------------------------------------------------------------'},
            {'type': 'img', 'content': help_img_dir + r'help2.png'},
            {'type': 'txt', 'content': '2：进入数据导入界面 ------------------------------------------------------------'},
            {'type': 'img', 'content': help_img_dir + r'help3.png'},
            {'type': 'txt', 'content': '3：配置数据来源页面（按需配置） -----------------------------------------------------------'},
            {'type': 'txt', 'content': '3.1：sqlserver数据来源配置方法                                    '},
            {'type': 'img', 'content': help_img_dir + r'help4.png'},
            {'type': 'img', 'content': help_img_dir + r'help5.png'},
            {'type': 'txt', 'content': '3.2：excel数据来源配置方法                                    '},
            {'type': 'img', 'content': help_img_dir + r'help11.png'},
            {'type': 'img', 'content': help_img_dir + r'help12.png'},
            {'type': 'txt', 'content': '3.3：marc数据来源配置方法                                    '},
            {'type': 'img', 'content': help_img_dir + r'help13.png'},
            {'type': 'txt', 'content': '3.4：noteexpress数据来源配置方法                                    '},
            {'type': 'img', 'content': help_img_dir + r'help14.png'},
            {'type': 'txt', 'content': '4：配置导入目标页面（按需配置） ------------------------------------------------------------'},
            {'type': 'txt', 'content': '4.1：系统平台导入目标配置方法                                      '},
            {'type': 'img', 'content': help_img_dir + r'help6.png'},
            {'type': 'img', 'content': help_img_dir + r'help7.png'},
            {'type': 'txt', 'content': '5：数据的来源和目标都配置好后，配置数据的导入方式（导入哪些字段，字段对应关系，是否查重等） ----------'},
            {'type': 'img', 'content': help_img_dir + r'help8.png'},
            {'type': 'txt', 'content': '补充：数据源字段名与目标字段名相同时，虽然会自动进行匹配，但是如果你不想选择导入某个目标字段的话，'},
            {'type': 'txt', 'content': '可以自行调整导入方案'},
            {'type': 'txt', 'content': '6：配置好后点击开始导入 -----------------------------------------------------------------'},
            {'type': 'img', 'content': help_img_dir + r'help9.png'},
        ]

        # self.centralwidget = QtWidgets.QWidget(MainWindow)
        # self.gongzuomoshi = QtWidgets.QGroupBox(self.centralwidget)
        self.listWidget = QListWidget(self)
        # self.listWidget.setFixedWidth(600)
        container_layout = QVBoxLayout()
        g = QGroupBox('')
        l = FlowLayout()
        g.setLayout(l)
        for file in iter(self.files_content):
            if file['type'] == 'img':
                pixmap = QPixmap(file['content'])
                if not pixmap.isNull():
                    autoWidth = pixmap.width() * self.imageheight / pixmap.height()
                    label = QLabel(pixmap=pixmap)
                    label.setScaledContents(True)
                    label.setFixedHeight(self.imageheight)
                    label.setFixedWidth(autoWidth)
                    l.addWidget(label)
            if file['type'] == 'txt':
                label = QLabel(text=file['content'])
                label.setStyleSheet('font-weight: bold; font-size: 20px;')
                label.setFixedHeight(60)
                l.addWidget(label)

        container_layout.addWidget(g)
        container_layout.addStretch()
        self.listWidget.setLayout(container_layout)

        self.qscrollarea = QScrollArea(self)
        self.qscrollarea.setGeometry(QRect(0, 50, 1150, 730))
        self.qscrollarea.setWidgetResizable(True)
        self.qscrollarea.setWidget(self.listWidget)

    def keyPressEvent(self, QKeyEvent):  # 键盘某个键被按下时调用
        '''
        按下 ESC关闭当前页
        :param QKeyEvent:
        :return:
        '''
        # 参数1  控件
        if QKeyEvent.key() == Qt.Key_Escape:  # 判断是否按下了ESC键
            self.close_btn.click()